package com.fs.jzzn.pojo;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import org.apache.commons.lang3.StringUtils;

import lombok.Data;
import lombok.EqualsAndHashCode;

import com.fs.base.param.SysConstant;
import com.fs.base.pojo.PEntity;
import com.fs.base.utils.ExcelUtils;

/**
 * @author TiddlerCJ
 * @desc 立项单项工程实体
 */
@Entity
@Table(name="p_project")
@Data@EqualsAndHashCode(callSuper=false)
public class Project  extends PEntity{
	private String pName;		//项目名称
	private String pfName;		//批复名称
	
	private String pNo;			//立项编号
	private String contractNo;	//合同编号

	private String pRoad;		//工程路段
	private String pType;		//专业类别
	private String pCreateDate;	//立项日期
	
	private String budgetMoney;	//立项预算
	private String actualMoney;	//完工预算
	private String status;		//项目状态
	
	private String pm;			//项目经理
	private String ppm;			//工程经理
	private String marketManager;//市场负责人
	
	//@Column(name="construction_unit_id", columnDefinition="varchar(48) COMMENT '建设单位ID'")
	//private String constructionUnitId;//建设单位
	
	//@Formula("(select a.name from p_assist_unit a where a.id = construction_unit_id)")
	private String constructionUnit;//建设单位
	
	//@Column(name="design_unit_id", columnDefinition="varchar(48) COMMENT '设计单位ID'")
	//private String designUnitId; 	//设计单位
	
	//@Formula("(select a.name from p_assist_unit a where a.id = design_unit_id)")
	private String designUnit; 		//设计单位
	
	private String operator;		//运营商
	
	
	private String subpackage;		//是否分包
	private Float subpackageScale;	//分包比例
	
	private String department;		//工程归属项目部
	private String region;			//区域
	private String priority;		//优先级
	
	private Float designLength;		//设计长度
	
	@Column(name="flow_id", columnDefinition="varchar(48) COMMENT '流程模板'")
	private String flowId;			//流程模板
	
	//@Formula("(select f.flow_name from p_flow f where f.id = flow_id)")
	//private String flowName; 		//流程模板名称
	
	//0-未开始
	//1已经开始
	//@Formula("(SELECT count(*) FROM p_flow_process fp WHERE fp.modle_id = id)")
	//private int startFlag; 			//流程是否开始
	
	//@Formula("(SELECT  fs.node_user_id FROM p_flow_status fs WHERE fs.modle_id = id)")
	//@Formula("(select a.node_user_id from p_flow_status a where a.modle_id = id)")
	//private String nodeUserId;		//流程处理节点人
	
	private String processInstanceId; //流程实例Id
	
	//立项编号, 工程路段, 专业类别, 订单编号, 项目名称, 立项预算, 
	//完工预算, 设计长度, 项目经理, 市场负责人, 建设单位, 设计单位, 运营商, 
	//工程经理, 工程归属, 立项日期, 项目状态, 是否分包, 分包比例, 
	//区域, 优先级, 流程模板, 实际长度, 实际芯数, 本地网长度, 电力长度
	public static List<Project> excelDataFormat(List<List<String>> data){
		List<Project> list = new ArrayList<Project>();
		for(List<String> rowData: data){
			list.add(excelData2Bean(rowData));
		}
		//删除标题行
		//if(list.size()>0) { list.remove(0); }
		return list;
	}
	
	private static Project excelData2Bean(List<String> row){
		row = ExcelUtils.dataLenFomart(row, 24);
		DecimalFormat df  = new DecimalFormat(".00");
		
		Project p = new Project();
		p.setPNo(row.get(0));//立项编号-工程路段编号
		p.setPRoad(row.get(1));//工程路段
		p.setStatus(row.get(2));//状态
		
		p.setPType(row.get(3));//专业类别
		p.setContractNo(row.get(4));//订单编号
		p.setPName(row.get(5));//项目名称
		try {
			Float budgetMoney = Float.valueOf(row.get(6));//立项预算
			p.setBudgetMoney(df.format(budgetMoney));
		} catch (Exception e) {
			System.err.println("立项预算数据格式有误："+ row.get(6));
		}
		
		try {
			Float actualMoney = Float.valueOf(row.get(7));//完工预算
			p.setActualMoney(df.format(actualMoney));
		} catch (Exception e) {
			System.err.println("完工预算数据格式有误："+ row.get(7));
		}
		
		try {
			Float len = Float.valueOf(row.get(8));
			p.setDesignLength(len);//设计长度
		} catch (Exception e) {
			System.err.println("设计长度数据格式有误："+ row.get(8));
		}
		p.setPm(row.get(9));//项目经理
		p.setMarketManager(row.get(10));//市场负责人
		p.setConstructionUnit(row.get(11));//建设单位
		p.setDesignUnit(row.get(12));//设计单位
		p.setOperator(row.get(13));//运营商
		p.setPpm(row.get(14));//工程经理
		p.setOrgNo(row.get(15));//组织机构
		p.setPCreateDate(row.get(16));//立项日期-订单日期
		p.setSubpackage(row.get(17));//是否分包
		try {
			Float subpackageScale = Float.valueOf(row.get(18));
			p.setSubpackageScale(subpackageScale);//分包比例
		} catch (Exception e) {
			System.err.println("分包比例数据格式有误："+ row.get(18));
		}
		p.setRegion(row.get(19));//区域
		p.setPriority(row.get(20));//优先级
		p.setRemark(row.get(21));//备注
		p.setCreateTime(new Date());
		
		String userName = row.get(23);
		if(StringUtils.isNotBlank(userName)){
			String userId = SysConstant.getKey(SysConstant.USERS_ID_NAME_MAP, userName);
			p.setCreaterId(userId);
		}
		return p;
	}
}
